// pages/cinema/cinema.js
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
     // 电影列表
     list: [],
     city: '未知',
     // 当前所在经纬度
     location: {},
     distance: 0,
     currPage: 0,//默认为第一页,请求成功之后再加一，以防请求失败
     pageSize: 15, //每页获取15条
     show: false  //显示加载完毕
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取当前位置
    this.getLocation();
  },
  
   // 获取影院列表

   getCinema( ){
    //  在请求的时候页数已经加1了
    app.request('/cinema/list',{cityName: this.data.city,currPage: this.data.currPage+1,pageSize:this.data.pageSize},'post')
    .then((res)=>{
      
      // 如果数据为空，添加底部提示
      if(res.data.length === 0) {
        this.setData({show: true});
        
      }
       // 遍历列表
       let list = res.data;
       list = list.map(item => {  
         // 计算两个坐标之间的距离
         let lat1, lng1, lat2, lng2;
         lat1 = item.latitude;
         lng1 = item.longitude;
         lat2 = this.data.location.latitude;
         lng2 = this.data.location.longitude;
        //  计算距离
         let distance = this.getDistance(lat1,lng1,lat2,lng2);  
         distance = distance.toFixed(2) + 'km';
         return {
           ...item,
           distance: distance||'距离未知'
         }
       })
      //  打印距离
      //  console.log(list[0].distance);
      list = [
        ...this.data.list,
        ...list
      ];
      this.setData({list,currPage: this.data.currPage+1},wx.hideLoading());
    }).catch((err)=>{
      wx.hideLoading()
      console.log('获取影院列表失败',err);
    })
  },

// 获取当前所在经纬度
getLocation() {
  // console.log(1);
wx.getLocation({
type: 'wgs84',
success: (res) =>{
  // console.log(2);
  let {
    latitude,
    longitude
  } = res;
  this.setData({
    location: {
      latitude,
      longitude
    }
  })
  // console.log(this.data.location.latitude);
  this.getCityName(latitude,longitude);
},
fail:()=> {
  this.setData({city: '定位失败'});
}
})

},

//计算距离，参数分别为第一点的纬度，经度；第二点的纬度，经度
getDistance(lat1,lng1,lat2,lng2){
var radLat1 = lat1 * Math.PI / 180.0;
var radLat2 = lat2 * Math.PI / 180.0;
var a = radLat1 - radLat2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * 6378.137; // EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
},
// 根据经纬度求城市
getCityName(latitude,longitude) {
// 可以微信原生，也可以腾讯地图API，加key
let url = `https://apis.map.qq.com/ws/geocoder/v1/?location=${latitude},${longitude}&key=XBZBZ-OBG63-LOD3N-3QR5Q-X6Z2Q-BFBIR`;


wx.request({
url,
success: (res)=>{
  // console.log('求城市',res);
  let city = res.data.result.address_component.city;
  this.setData({city});
  
  this.getCinema();
},
fail:()=> {
  this.setData({city: '获取城市失败'});
}
})
},
onPullDownRefresh: function () {
console.log('用户下拉');
},
// 触底事件
onReachBottom: function () {
  console.log('触发触底事件');
  this.getCinema();
}
})